package com.example.rpc_core.servers;

import io.vertx.core.Handler;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.net.NetServer;
import io.vertx.core.parsetools.RecordParser;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TcpServerImpl implements HttpServer {
//    @Override
//    public void startService(int port) {
//        Vertx vertx = Vertx.vertx();
//        NetServer netServer = vertx.createNetServer();
//        netServer.connectHandler(socket->{
//            RecordParser recordParser = RecordParser.newFixed(13);
//            recordParser.setOutput(new Handler<Buffer>() {
//                //初始化
//                int size=-1;
//                Buffer resBuffer = Buffer.buffer();
//                @Override
//                public void handle(Buffer buffer) {
//                    if (size==-1){
//                        //读取消息体长度
//                        size=buffer.getInt(4);
//                        recordParser.fixedSizeMode(size);
//                        //写入头消息到结果
//                        resBuffer.appendBuffer(buffer);
//                    }else{
//                        resBuffer.appendBuffer(buffer);
//                        System.out.println(resBuffer.toString());
//                        //重置一轮
//                        recordParser.fixedSizeMode(13);
//                        size=-1;
//                        resBuffer=Buffer.buffer();
//                    }
//                }
//            });
//            socket.handler(recordParser);
//        });
//        netServer.listen(port, res->{
//            if (res.succeeded()){
//                System.out.println("Tcp服务启动成功");
//            }
//            else System.out.println("Tcp服务启动失败");
//        });
//    }
    //}


//    //请求例子
//    private byte[]myRequest(byte[]requestData){
//        return "你好，client".getBytes();
//    }

    //创建一个新的vertx实例服务
    @Override
    public void startService(int port) {
        Vertx vertx=Vertx.vertx();
        NetServer netServer = vertx.createNetServer();
        //处理请求
        netServer.connectHandler(new TcpServerHandle());
        netServer.listen(port, res->{
            if (res.succeeded()){
                System.out.println("Tcp服务启动成功");
            }
            else System.out.println("Tcp服务启动失败");
        });
    }
}



